android 5 通知栏

# 1

不是讲理论的,就是遇到很多奇怪的问题;
没事做,决定自己仿个个魅族便签玩玩,体验一把开发app的过程;

如何加入标题栏,我还是比较喜欢称之为标题栏,我也没弄明白actionbar 和toolbar改了什么,只提供解决方案;

最初 的时候是这样的,因为toolbar是viewgroup ,也就是说在toolbar中可以直接添加其他控件/view,于是我就加了两个imagebutton;然后我们想啊,click事件怎么写呢?找到button,添加事件,这样做好像和toolbar没有半毛钱关系啊;
记得别忘了把主题修改为noactionbar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/mytoolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/黄色"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
>
<!--<RelativeLayout-->
<!--xmlns:android="http://schemas.android.com/apk/res/android"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="match_parent">-->
<!--<ImageButton-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:id="@+id/imageButton"-->
<!--android:background="@drawable/more"-->
<!--android:layout_alignTop="@+id/imageButton2"-->
<!--android:layout_alignParentLeft="true"-->
<!--android:layout_alignParentStart="true"-->
<!--android:layout_marginLeft="8dp" />-->
<!--<ImageButton-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:id="@+id/imageButton2"-->
<!--android:background="@drawable/serch"-->
<!--android:layout_centerVertical="true"-->
<!--android:layout_alignParentRight="true"-->
<!--android:layout_alignParentEnd="true"-->
<!--android:layout_marginRight="8dp"/>-->
<!--</RelativeLayout>-->
</android.support.v7.widget.Toolbar>

然后google了一圈,发现toolbar 可以在activity 的 onCreate中获取,然后就可以自己动态定义toolbar上的元素了,比如说title什么的;但是奈何我用的Fragment,就又找了一圈:
问题一:解决Fragment中的toolbar问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_list,container,false);
Toolbar toolbar = (Toolbar) view.findViewById(R.id.include);
AppCompatActivity activity = (AppCompatActivity) getActivity();
activity.setSupportActionBar(toolbar);
activity.getSupportActionBar().setTitle("便签");
toolbar.setNavigationIcon(R.drawable.more); //这边要留意的是setNavigationIcon需要放在 setSupportActionBar之后才会生效。
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}

问题二:重名问题,其实上面的代码不是困扰,困扰在哪里呢?

1
2
Toolbar toolbar = (Toolbar) view.findViewById(R.id.include);
//incude 是什么鬼呢?

这个命名实在是,首先我的toolbar本身id叫做toolbar,这个xml叫做toolbar.xml,然后我们将toolbar引入到我们自己的布局时,是这样的:

1
2
3
<include layout="@layout/toolbar"
android:id="@+id/include"/>

查了好久,stackoverflow看过,也没懂,后来自己想了想,我们在onCreateView中获取的view肯定是引如toolbar的布局,这样才能找到它啊;于是问题终于终结掉;

问题三:toolbar添加控件后 左侧总有空白
指在xml文件中添加控件

1
2
3
4
5
6
7
8
<android.support.v7.widget.Toolbar
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/base_toolbar"
android:layout_width="match_parent"
android:layout_height="46dip"
android:background="?attr/colorPrimary"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp" />

# 2

listview:
这里写图片描述
因为是想尽量模仿,不知道你们注意到listiew中每一项中间是存在间隔的,然后嘞也是弄了好久

1
2
3
4
5
6
7
8
9
10
<com.baoyz.swipemenulistview.SwipeMenuListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/include"
android:divider="# F8F8FF" //间隔的颜色
android:background="# F8F8FF" //背景颜色,可以选择和间隔颜色或者与列表项一致,否则你会发现间隔有两种颜色
android:dividerHeight="4dp" //间隔大小
/>
1
2
3
4
5
6
7
8
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="60dp"
android:padding="8dp"
android:background="# ffffff" //列表项背景颜色,这样就ok
>

题外话:
1.寻找答案时多动脑子
2.别想着自己配色,太难看;